package com.tarena.lbs.attach.util;

import com.tarena.lbs.attach.config.FileConfig;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDate;
import java.util.Arrays;

public class FileUtil {

    private static FileConfig fileConfig;

    public static void setFileConfig(FileConfig fileConfig) {
        FileUtil.fileConfig = fileConfig;
    }

    public static void validateFile(MultipartFile file) {
        if (file.isEmpty()) {
            throw new IllegalArgumentException("文件不能为空");
        }

        // 校验文件类型
        String contentType = file.getContentType();
        if (!Arrays.asList(fileConfig.getAllowedTypes()).contains(contentType)) {
            throw new IllegalArgumentException("不支持的文件类型");
        }

        // 校验文件大小
        long maxSize = parseSize(fileConfig.getMaxSize());
        if (file.getSize() > maxSize) {
            throw new IllegalArgumentException("文件大小不能超过" + fileConfig.getMaxSize());
        }
    }

    private static long parseSize(String size) {
        if (size.endsWith("MB")) {
            return Long.parseLong(size.substring(0, size.length() - 2)) * 1024 * 1024;
        }
        return Long.parseLong(size);
    }

    public static String generateRelativePath(String fileId) {
        // 根据文件ID生成存储路径，如：2023/06/15/abc123.jpg
        return String.format("%s/%s/%s/%s",
                LocalDate.now().getYear(),
                LocalDate.now().getMonthValue(),
                LocalDate.now().getDayOfMonth(),
                fileId);
    }
}